package com.example.novelweb.utils.WordCheck;

import cn.hutool.core.collection.CollUtil;

import java.util.Set;

public class StopCharacter {
  public static final Set<Character> STOP_WORD = CollUtil.newHashSet(new Character[]{
      ' ', '\'', '、', '。', '·', 'ˉ', 'ˇ', '々', '—', '～',
      '‖', '…', '‘', '’', '“', '”', '〔', '〕', '〈', '〉',
      '《', '》', '「', '」', '『', '』', '〖', '〗', '【', '】',
      '±', '＋', '－', '×', '÷', '∧', '∨', '∑', '∏', '∪', '∩',
      '∈', '√', '⊥', '⊙', '∫', '∮', '≡', '≌', '≈', '∽', '∝',
      '≠', '≮', '≯', '≤', '≥', '∞', '∶', '∵', '∴', '∷', '♂',
      '♀', '°', '′', '〃', '℃', '＄', '¤', '￠', '￡', '‰', '§',
      '☆', '★', '〇', '○', '●', '◎', '◇', '◆', '□', '■', '△',
      '▽', '⊿', '▲', '▼', '◣', '◤', '◢', '◥', '▁', '▂', '▃',
      '▄', '▅', '▆', '▇', '█', '▉', '▊', '▋', '▌', '▍', '▎',
      '▏', '▓', '※', '→', '←', '↑', '↓', '↖', '↗', '↘', '↙',
      '〓', 'ⅰ', 'ⅱ', 'ⅲ', 'ⅳ', 'ⅴ', 'ⅵ', 'ⅶ', 'ⅷ', 'ⅸ',
      'ⅹ', '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨',
      '⑩', '⒈', '⒉', '⒊', '⒋', '⒌', '⒍', '⒎', '⒏', '⒐',
      '⒑', '⒒', '⒓', '⒔', '⒕', '⒖', '⒗', '⒘', '⒙', '⒚',
      '⒛', '⑴', '⑵', '⑶', '⑷', '⑸', '⑹', '⑺', '⑻', '⑼',
      '⑽', '⑾', '⑿', '⒀', '⒁', '⒂', '⒃', '⒄', '⒅', '⒆',
      '⒇', 'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ',
      'Ⅹ', 'Ⅺ', 'Ⅻ', '！', '”', '＃', '￥', '％', '＆', '’',
      '（', '）', '＊', '＋', '，', '－', '．', '／', '０', '１',
      '２', '３', '４', '５', '６', '７', '８', '９', '：', '；',
      '＜', '＝', '＞', '？', '＠', '〔', '＼', '〕', '＾', '＿',
      '‘', '｛', '｜', '｝', '∏', 'Ρ', '∑', 'Υ', 'Φ', 'Χ', 'Ψ',
      'Ω', 'α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ',
      'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ',
      'χ', 'ψ', 'ω', '（', '）', '〔', '〕', '＾', '﹊', '﹍',
      '╭', '╮', '╰', '╯', '\ue83a', '_', '\ue83a', '^', '（',
      '^', '：', '！', '/', '\\', '"', '<', '>', '`', '·', '。',
      '{', '}', '~', '～', '(', ')', '-', '√', '$', '@', '*', '&',
      '#', '卐', '㎎', '㎏', '㎜', '㎝', '㎞', '㎡', '㏄', '㏎', '㏑',
      '㏒', '㏕', '+', '=', '?', ':', '.', '!', ';', ']', '|', '%'
  });

  public StopCharacter() {
  }

  public static boolean isStopChar(char ch) {
    return Character.isWhitespace(ch) || STOP_WORD.contains(ch);
  }

  public static boolean isNotStopChar(char ch) {
    return !isStopChar(ch);
  }
}
